<?php
class SQLHelper {
		
	public $conn;
	public $host = "localhost";
	public $dbname = "simbs";
	public $dbuser = "simbs";
	public $dbpassword = "simbs";
	
	//这是一个用户数据库验证的构造函数
	//每次创建新对象都会调用构造函数__construct()，在使用对象前完成初始化
	public function __construct(){
		
		//建立连接
		$this->conn = mysql_connect($this->host, $this->dbuser,$this->dbpassword);
		//连接失败，提示错误
		if(!$this->conn){
			die("连接失败".mysql_error());
		}
	
		//设置访问数据库的编码
		mysql_query("set names utf8",$this->conn) or die(mysql_error());
		
		//选择数据库
		mysql_select_db($this->dbname,$this->conn);
		
	}

	//关闭连接的方法
	public function close_connect(){
		mysql_close($this->conn);
	}

	//dql数据查询语言
	//dml数据操纵语言
	//ddl数据定义语言
	//dcl数据控制语言
	
	//执行dql语句方法
	public function execute_dql($sql){
		$res = mysql_query($sql, $this->conn) or die(mysql_error());
		//把查询到的数据倒腾到数值$arr中，就可以释放资源
		$arr = array();
		$i = 0;
		while($row = mysql_fetch_assoc($res)){
			$arr[$i++] = $row;
		}
		//因为$res=>array()，所以可以释放资源
		mysql_free_result($res);
		
		return $arr;
	}
	//考虑分页情况的执行dql方法
	public function execute_dql_pager($sql1, $sql2, $pager){
		
		//$sql1="select * from where table limit 0,$pageSize"
		//$sql2="select count(id) from table"是查总记录数
		
		$res1 = mysql_query($sql1, $this->conn) or die(mysql_error());
		//res1=>array()
		$arr = array();
		while($row = mysql_fetch_assoc($res1)){
			$arr[] = $row;
		}
		//把$arr赋值给$pager
		$pager->res_array=$arr;

		mysql_free_result($res1);
		
		$res2 = mysql_query($sql2,$this->conn) or die(mysql_error());
		if($row=mysql_fetch_row($res2)){
			$pager->pageCount = ceil($row[0]/$pager->pageSize);
			$pager->rowCount = $row[0];
		
		}
		mysql_free_result($res2);
		
		//分页下面的导航栏
		if($pager->navend ){
		

			//把$pager->navend转成数组，把导航栏要显示字符串都存进去，再合并字符串便于输出显示导航栏
			$pager->navend = array();
			
			//显示上一页和下一页
			if($pager->pageNow > 1){
				$prePage = $pager->pageNow - 1;
				//注意href后面可以只填?pageNow=$prePage，?前面会自动加上本页的地址
				$pager->navend[] = "<a href='?pageNow=$prePage'>上一页</a>";
			}
			if($pager->pageNow < $pager->pageCount){
				$nextPage = $pager->pageNow + 1;
				$pager->navend[] = "<a href='?pageNow=$nextPage'>下一页</a>";
			}
		
			//显示当前页和总页数
			//跳转指定页
			 $pager->navend[] = "<form action='blogList.php'><span>"."&nbsp;当前第".$pager->pageNow."页"."&nbsp;总共".$pager->pageCount."页";
        		//可以用: echo "&nbsp;当前第{$pageNow}页&nbsp;总共{$pageCount}页";
                	$pager->navend[] = "转到第<input type='text' name='pageNow' style='width:20px;'/>页
                <input type='submit' value='Go'/></span></form>";

			$pager->navend = implode($pager->navend);
		}
	}
	

	
	//执行dml语句方法(insert,update,delete)
	//我觉得可以把返回值改为字符串“没改变，成功之类的，然后可以显示
	public function execute_dml($sql){
		$res = mysql_query($sql, $this->conn) or die(mysql_error());
		if(!$res){
			return 0;
		}else{
			if(mysql_affected_rows($this->conn)>0){
				return 1;//表示成功
			}else{
				return 2; //没有行受影响
			}
		}
	}


	//执行ddl语句方法(CREATE TABLE/VIEW/INDEX/SYN/CLUSTER)
	public function execute_ddl($sql){
		$res = mysql_query($sql, $this->conn) or die(mysql_error());
		if(!$res){
			return 0;//表示失败
		}else{
			return 1;//表示成功
		}
	}
}
?>
